package mechanism.garbage;

public class Garbage 
{
	int index;
	static int count;

	Garbage()
	{
		count++;
		System.out.println("object "+count+" constructs");
		setID(count);
	}

	void setID(int id)
	{
		index=id; //记录每一个对象的序号
	}

	protected void finalize()//类Object中的方法，当垃圾回收器确定不存在对该对象的更多引用时，由对象的垃圾回收器调用此方法。低优先级，只有在内存不足时，由系统调用
	{
		System.out.println("object "+index+" is reclaimed.");
	}

	public static void main(String args[])
	{
		new Garbage();
		new Garbage();
		new Garbage();
		new Garbage();
		
		//System.gc();
		/*
		 * public static void gc()
		 * 运行垃圾回收器。
		 * 
		 * 调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象，以便能够快速地重用
		 * 这些对象当前占用的内存。当控制权从方法调用中返回时，虚拟机已经尽最大努力从所有
		 * 丢弃的对象中回收了空间。
		 * 
		 * 调用 System.gc() 实际上等效于调用：
		 * Runtime.getRuntime().gc()
		 */
		
		int i = 0;
		int sum = 0;
		sum = ++i +
			++i + 
			i++ + 
			i;
		System.out.println(i);
		System.out.println(sum);
		
		/*
		++i;
		i=i+i+i+i;
		i++
		i++
		i++
		*/
	}
}
